package me.mingshan.leetcode;

/**
 * 2733. Neither Minimum nor Maximum
 *
 * https://leetcode.cn/problems/neither-minimum-nor-maximum/description/
 *
 * 给你一个整数数组 nums ，数组由 不同正整数 组成，请你找出并返回数组中 任一 既不是 最小值 也不是 最大值 的数字，如果不存在这样的数字，返回 -1 。
 *
 * 返回所选整数。
 *
 *
 *
 * 示例 1：
 *
 * 输入：nums = [3,2,1,4]
 * 输出：2
 * 解释：在这个示例中，最小值是 1 ，最大值是 4 。因此，2 或 3 都是有效答案。
 * 示例 2：
 *
 * 输入：nums = [1,2]
 * 输出：-1
 * 解释：由于不存在既不是最大值也不是最小值的数字，我们无法选出满足题目给定条件的数字。因此，不存在答案，返回 -1 。
 * 示例 3：
 *
 * 输入：nums = [2,1,3]
 * 输出：2
 * 解释：2 既不是最小值，也不是最大值，这个示例只有这一个有效答案。
 *
 *
 * @author hanjuntao
 * @date 2025/7/3 0003
 */
public class L_2733_neither_minimum_nor_maximum {

    public static void main(String[] args) {
        int[] nums = new int[]{3,2,1,4};
        System.out.println(findNonMinOrMax(nums));
    }

    /**
     * 遍历数组，找出最大值和最小值，然后遍历数组，找出不是最大值和最小值的数字
     *
     * @param nums
     * @return
     */
    public static int findNonMinOrMax(int[] nums) {
        if (nums.length <= 2) {
            return -1;
        }

        int min = nums[0];
        int max = nums[0];

        for (int i = 1; i < nums.length; i++) {
            if (nums[i] > max) {
                max = nums[i];
            } else if (nums[i] < min) {
                min = nums[i];
            }
        }

        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != min && nums[i] != max) {
                return nums[i];
            }
        }

        return -1;
    }
}
